home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / msdos / editors / chiaro / gifcheck.doc < prev    next >
Text File  |  1993-03-12  |  48KB  |  1,103 lines

  1. GIFCHECK 1.11 DOCUMENTATION
  2. ===========================
  3. James W. Birdsall
  4. 03/19/93
  5.  
  6.  
  7. 0. CONTENTS
  8. -----------
  9.    0.      CONTENTS
  10.    1.      INTRODUCTION
  11.     1.1     Quick Reference
  12.     1.2     Copyright, License, and Warranty Disclaimer
  13.    2.      USAGE
  14.     2.1     Targets
  15.      2.1.1   Wildcards
  16.     2.2     Options
  17.      2.2.1   Output redirection options
  18.      2.2.2   Output format options
  19.      2.2.3   Processing options
  20.      2.2.4   Diagnostic options
  21.      2.2.5   -# Version
  22.      2.2.6   -? Help
  23.    3.      OUTPUT
  24.     3.1     File Header
  25.     3.2     Image
  26.     3.3     Extension Blocks
  27.      3.3.1   Generic extensions
  28.      3.3.2   Graphic Control Extension
  29.      3.3.3   Plain Text Extension
  30.      3.3.4   Comment Extension
  31.      3.3.5   Application Extension
  32.     3.4     Terminator
  33.    4.      DIAGNOSTIC MESSAGES
  34.     4.1     Anomalies
  35.     4.2     Violations
  36.     4.3     Fascinatings
  37.     4.4     Nitpicks
  38.     4.5     Miscellaneous
  39.    5.      THE END
  40.  
  41.  
  42. 1. INTRODUCTION
  43. ---------------
  44.  
  45.    GIFCHECK is a program of the Chiaro suite. It performs a complete
  46. analysis and verification of GIF-format images and displays the
  47. information it finds. It can also be used in batch files to determine
  48. whether GIF files need to be passed through the GIFSTRIP program to
  49. remove excess characters.
  50.  
  51.  1.1 Quick Reference
  52.  -------------------
  53.  
  54.     This is a quick summary of the usage and options of GIFCHECK.
  55. Invoking GIFCHECK with the option "-?" will produce a similar summary.
  56. Complete explanations may be found in section 2.
  57.  
  58.    usage: gifcheck [options] target [target ...]
  59.       target       filename, filename with wildcards, or path. Wildcards
  60.                     are *, ?, and ranges or groups specified in []. A
  61.                     range or group may be complemented with ^ or !.
  62.  
  63.       -b           BATCH: suppresses all console output. Should be first
  64.                     on the line. Returns ERRORLEVEL 0 if OK, 1 if a
  65.                     non-GIF file was found, 2 if unexpected EOF in a GIF
  66.                     file, 3 on other error, 4 if the GIF is OK but needs
  67.                     to be stripped, and 5 if the. GIF is OK but needs to
  68.                     be stripped with the -m option.
  69.       -r           Sends error messages to stderr instead of stdout.
  70.       -p           Turn off paging of output (paging always off when
  71.                     stdout is redirected or -b BATCH is in effect).
  72.  
  73.       -v           VERBOSE: turns on verbose output.
  74.       -h           HEX DUMP: switches from ASCII to HEX dump for certain
  75.                     blocks.
  76.       -c           COLOR DUMP: dumps raw RGB values from all colormaps.
  77.  
  78.       -l           Disables checking for leading junk characters (from a
  79.                     Mac, for example).
  80.       -f           FAST: disables decompression. Only block formatting
  81.                     is checked.
  82.  
  83.       -dn          SET DISPLAY WARNING LEVEL:
  84.                     0   displays anomalies and violations
  85.                     1   (default) displays anomalies, violations, and
  86.                          fascinatings
  87.                     2   displays anomalies, violations, fascinatings,
  88.                          and nitpicks
  89.       -en          SET EXIT WARNING LEVEL:
  90.                     0   exits on anomalies only
  91.                     1   (default) exits on anomalies and violations
  92.                     2   exits on anomalies, violations, and fascinatings
  93.  
  94.       -#           VERSION: Prints version information on internal
  95.                     modules, then exits.
  96.  
  97.    GIFCHECK automatically reads a list of targets from stdin if stdin is
  98. redirected. Targets must be separated by newlines, and are
  99. wildcard-expanded in the same way as command-line targets. Note that
  100. command-line targets are ignored if stdin is redirected; if stdin is not
  101. redirected, there must be at least one target on the command line.
  102.  
  103.    Options are case-insensitive, and may not be combined.
  104.  
  105.  1.2 Copyright, License, and Warranty Disclaimer
  106.  -----------------------------------------------
  107.  
  108.    The Graphics Interchange Format(c) is the Copyright property of
  109. CompuServe Incorporated. GIF(sm) is a Service Mark property of
  110. CompuServe Incorporated.
  111.  
  112.    GIFCHECK is not in the public domain. All the files are copyright
  113. 1993 by James W. Birdsall, all rights reserved.
  114.  
  115.    The following license applies to the entire Chiaro suite, which is
  116. made up of all the files listed in the file MANIFEST. Permission is
  117. granted to do the following:
  118.  
  119.         You may freely redistribute this archive, so long as it contains
  120.         all the files listed in the file MANIFEST, intact and
  121.         unmodified.
  122.  
  123.         You may use the programs contained in this archive for a period
  124.         of 30 days for evaluation purposes.
  125.  
  126.    Payment of the $10 shareware fee (which covers all the programs in
  127. the Chiaro suite) licenses you to use the Chiaro suite beyond the
  128. evaluation period. This license-to-use specifically includes use by
  129. bulletin board systems and other commercial or private information
  130. services.
  131.  
  132.    Registered users will also receive update notices and bug reports,
  133. and are entitled to use future versions without further payment.
  134.  
  135.    The contents of the distribution archive, and all other related
  136. files, information, and services are provided "as is" and without
  137. warranty. To the extent permitted by applicable law, the author
  138. disclaims all warranties, express or implied, including but not limited
  139. to, any implied warranty of merchantability or fitness for a particular
  140. purpose. While effort has been made to ensure that the files,
  141. information, and services are accurate and correct, the author shall not
  142. be liable for damages arising out of the use of or inability to use this
  143. product, including but not limited to, loss of profit, data, or use of
  144. this software, or special, incidental, or consequential damages or other
  145. similar claims, even if the author has been specifically advised of the
  146. possibility of such damages. Some states do not allow the exclusion of
  147. incidental or consequential damages, so the foregoing limitation may not
  148. apply to you.
  149.  
  150.    Information on contacting the author is provided at the end of this
  151. file.
  152.  
  153.  
  154. 2. USAGE
  155. --------
  156.  
  157.    GIFCHECK may be called with zero or more options interspersed with
  158. zero or more targets. All options are scanned before any file searching
  159. is done, so order of options and targets is unimportant. If the standard
  160. input is not redirected, at least one target must be specified on the
  161. command line. If the standard input is redirected (is not the keyboard),
  162. GIFCHECK will detect this and will attempt to read a list of targets,
  163. separated with newlines, from the standard input. Targets on the command
  164. line will be ignored, but options on the command line will be used. This
  165. feature is for use with the "front end" option of CHILS.
  166.  
  167.    GIFCHECK requires 150,000 bytes of free conventional memory to run.
  168.  
  169.  2.1 Targets
  170.  -----------
  171.  
  172.    A target can consist of a filename (optionally with path), a path, or
  173. a filename with wildcards (again, optionally with path). In the case of
  174. a filename, that file is checked. In the case of a path, all files in
  175. the specified directory are checked. In the case of a filename with
  176. wildcards, all files in the appropriate directory (the current directory
  177. if no path is given) matching the wildcards are checked.
  178.  
  179.    If a file that is checked is a GIF format file, it is processed. If
  180. it is not, it is not processed.
  181.  
  182.   2.1.1 Wildcards
  183.   ---------------
  184.  
  185.    Wildcards are much closer to the UNIX standard than MS-DOS. The
  186. characters * and ? retain their ordinary meanings but matching is much
  187. more intelligent. For example, *A.GIF will match LENNA.GIF but not
  188. CHESS.GIF, whereas under ordinary MS-DOS wildcards, *A.GIF would match
  189. both. Further, groups and ranges of characters may be specified in
  190. brackets []. For example, PIC0[1-5].GIF will match any filename starting
  191. with "PIC0", then containing any one of the characters "1", "2", "3",
  192. "4", or "5", and ending with ".GIF". PIC0[1-5A-F].GIF will match the
  193. names described before or those with the characters "A", "B", "C", "D",
  194. "E", or "F" between "PIC0" and ".GIF".
  195.  
  196.    A range or group may be complemented with the characters "^" or "!".
  197. For example, PIC0[^1-5].GIF will match any name with one character
  198. between "PIC0" and ".GIF" unless that character is "1", "2", "3", "4",
  199. or "5".
  200.  
  201.    Note that wildcards are only allowed in the filename portion, not the
  202. path portion. "\PICTURES\NEWGIF*\*.GIF" is illegal and an error message
  203. will be issued.
  204.  
  205.  2.2 Options
  206.  -----------
  207.  
  208.    GIFCHECK has a variety of options to modify its function, including
  209. options to control the formatting of output, the level of processing
  210. done, etc. These options are described below. Options are
  211. case-insensitive ("-c" is the same as "-C") and may not be combined
  212. ("-cv" will not have the desired effect, since only the "-c" will be
  213. recognized; "-c -v" should be used instead).
  214.  
  215.   2.2.1 Output redirection options
  216.   --------------------------------
  217.  
  218.    The following options specify where various types of output should be
  219. sent.
  220.  
  221.    2.2.1.1 -b Batch
  222.    ----------------
  223.  
  224.    The -b option causes GIFCHECK to operate in batch mode. All console
  225. output is suppressed. This option should be first on the command line or
  226. other options may generate console output before this option is found.
  227. When in batch mode, GIFCHECK adjusts the ERRORLEVEL return to reflect
  228. the results of processing. ERRORLEVEL is set to:
  229.  
  230.         0       if the file was a valid GIF format file and did not need
  231.                  stripping
  232.         1       if the file was not a GIF format file
  233.         2       if GIFCHECK encountered an unexpected end-of-file
  234.         3       if there was any other error
  235.         4       if the file is a valid GIF format file but needs to be
  236.                  stripped (excess characters on end of file)
  237.         5       if the file is a valid GIF format file but needs to be
  238.                  stripped with the -m option (excess characters at the
  239.                  beginning of the file and possibly the end as well)
  240.  
  241. NOTE: the ERRORLEVEL reflects only the results of the last file
  242. processed. Therefore, in batch mode only one file should be specified on
  243. the command line.
  244.  
  245. NOTE: this option automatically invokes the -p no-paging option.
  246.  
  247.    2.2.1.2 -r Error Redirect
  248.    -------------------------
  249.  
  250.    Normally error messages are sent to the standard output stream, along
  251. with all other output from GIFCHECK. However, error messages can be
  252. redirected to the standard error output stream with the -r option. This
  253. means that error messages will appear on the screen even if output is
  254. redirected to a file with the DOS ">" or "|" output redirection
  255. operators. Note that the error messages will not appear in the file,
  256. however.
  257.  
  258.    2.2.1.3 -p Disable paging
  259.    -------------------------
  260.  
  261.    Normally, output is paged (after a screenful of output has been
  262. printed, GIFCHECK pauses with the message "---more---" and waits for a
  263. keystroke before continuing). Also, an ASCII clockface is displayed when
  264. decompressing an image to indicate that GIFCHECK is still working. The
  265. -p option turns off both of these features. Note that the -p option is
  266. automatically invoked if the standard output is redirected, or if the -b
  267. option is in effect.
  268.  
  269.   2.2.2 Output format options
  270.   ---------------------------
  271.  
  272.    2.2.2.1 -v Verbose
  273.    ------------------
  274.  
  275.    This option causes output to be in a more verbose format. No
  276. additional data is displayed.
  277.  
  278.    2.2.2.2 -h Hex dump
  279.    -------------------
  280.  
  281.    This option causes output to be in a hex dump format instead of plain
  282. text format for Plain Text Extensions and Comment Extensions, extension
  283. blocks defined by the GIF89a standard.
  284.  
  285.    2.2.2.3 -c Color dump
  286.    ---------------------
  287.  
  288.    This option causes GIFCHECK to dump all colormaps found in an image,
  289. local and global, as decimal RGB triplets of the format RRR/GGG/BBB.
  290.  
  291.  
  292.   2.2.3 Processing options
  293.   ------------------------
  294.  
  295.    The following options determine what processing is performed on a
  296. file.
  297.  
  298.    2.2.3.1 -l No leading junk check
  299.    --------------------------------
  300.  
  301.    The -l option disables checking for excess characters at the
  302. beginning of the file. This means that if a file does not begin with the
  303. GIF signature, the file is assumed not to be a GIF file. Excess
  304. characters are typically found at the beginnings of files which have
  305. been transferred incorrectly from a Macintosh computer.
  306.  
  307.    2.2.3.2 -f Fast
  308.    ---------------
  309.  
  310.    This option disables image decompression, in which the compressed
  311. image data is checked to ensure that the data has not been corrupted.
  312. This can be a slow process, especially for large files. However, an
  313. image cannot be completely verified if it is not decompressed, and some
  314. information can only be obtained by decompressing the image data.
  315.  
  316.  
  317.   2.2.4 Diagnostic options
  318.   ------------------------
  319.  
  320.    GIFCHECK produces a wide variety of diagnostics. They are described
  321. in more detail in section 4, but they all belong in one of four
  322. categories:
  323.  
  324.         ANOMALY         a format error so major that GIFCHECK cannot
  325.                          decide how to continue processing the file
  326.         VIOLATION       a major violation of the GIF specification,
  327.                          which will probably cause most viewers to fail
  328.                          or display incorrectly
  329.         FASCINATING     (from Mr. Spock) a violation of the GIF
  330.                          specification, but most viewers should cope
  331.                          with the image OK
  332.         NITPICK         technically, a violation of the GIF
  333.                          specification, but so minor as to be
  334.                          meaningless -- a large fraction of all images
  335.                          contain NITPICK-type violations
  336.  
  337.    The diagnostic options determine which levels of diagnostics are
  338. displayed by GIFCHECK, and which levels cause GIFCHECK to skip
  339. immediately to the next image (or exit, if on the last image). Note that
  340. anomalies and violations are always displayed, anomalies always cause
  341. GIFCHECK to skip to the next image, and NITPICKS never cause GIFCHECK to
  342. skip.
  343.  
  344.    2.2.3.1 -d Set display warning level
  345.    ------------------------------------
  346.  
  347.    The -d option takes an argument 0, 1, or 2, which must be immediately
  348. next to the "-d" (no space).
  349.  
  350.         -d0             display anomalies and violations
  351.         -d1 (default)   display anomalies, violations, and fascinatings
  352.         -d2             display all
  353.  
  354.    2.2.3.2 -e Set exit warning level
  355.    ---------------------------------
  356.  
  357.    The -e option takes an argument 0, 1, or 2, which must be immediately
  358. next to the "-e" (no space).
  359.  
  360.         -e0             skip on anomalies only
  361.         -e1 (default)   skip on anomalies and violations
  362.         -e2             skip on anomalies, violations, and fascinatings
  363.  
  364.   2.2.4 -# Version
  365.   ----------------
  366.  
  367.    This option is intended more for bug reporting purposes than anything
  368. else. It causes GIFCHECK to print the version numbers and compilation
  369. dates of its component modules. No files are processed, and all other
  370. options are ignored.
  371.  
  372.   2.2.5 -? Help
  373.   -------------
  374.  
  375.    This option, or any syntax error on the command line, causes a usage
  376. message to be displayed. No files are processed, and all other options
  377. are ignored.
  378.  
  379.  
  380. 3. OUTPUT
  381. ---------
  382.  
  383.    GIFCHECK recognizes eight different types of blocks within a GIF
  384. file: file headers, images, file terminators, and five types of
  385. extension block: generic extensions, Graphic Control Extensions, Plain
  386. Text Extensions, Comment Extensions, and Application Extensions (the
  387. last four are found only in GIF89a-format files).
  388.  
  389.    Data from each type of block is output in a different format, which
  390. may change according to the settings of the output format options. The
  391. various displays are explained below. Examples are surrounded by lines
  392. of equals signs for easier reading; the lines are not part of the
  393. display.
  394.  
  395.  3.1 File Header
  396.  ---------------
  397.  
  398.    The default file header display, with no options, looks like this:
  399.  
  400. =====
  401. Processing \JUNK2\DEVIL.GIF...
  402. FILE \JUNK2\DEVIL.GIF   GIF87a      11209 bytes
  403.    logical screen:    640 x   480
  404.    8 bits per color available on source
  405. GLOBAL COLOR TABLE:
  406.    6 bits (64 colors)   bg index 0 (000/000/000)
  407.    59 unique colors.
  408. =====
  409.  
  410.    The first line gives the filename, in case an error is encountered
  411. immediately. The second line repeats the filename and displays the
  412. format and filesize. The third line gives the size, in pixels, of the
  413. logical screen on which all images in the file will be displayed. The
  414. fourth line displays how many bits per color (R,G,B) were available on
  415. the machine on which the file was created. This value is frequently set
  416. incorrectly and may generally be ignored.
  417.  
  418.    The global color table, if present, has a subsection to itself. The
  419. sixth line indicates how large the global color table is. It also
  420. displays the background color index and the RGB value corresponding to
  421. that index. While the background color index is actually part of the
  422. file header proper, it is meaninless unless a global color table is
  423. present, so it is displayed in the global color table section. If the
  424. file is a GIF89a-format image, this line also indicates whether the
  425. global color table is sorted. Finally, the seventh line indicates how
  426. many unique colors are present in the global color table.
  427.  
  428.    If no global color table is present, a line stating this is displayed
  429. instead.
  430.  
  431.    If the -v VERBOSE option is in effect, the file header display looks
  432. like this:
  433.  
  434. =====
  435. Processing \JUNK2\DEVIL.GIF...
  436. FILE \JUNK2\DEVIL.GIF is GIF version GIF87a:
  437.    file size (bytes):    11209
  438.    logical screen size (pixels, width x height):   640 x   480
  439.    8 bits per color available on source
  440.    This file has a global color table.
  441. GLOBAL COLOR TABLE:
  442.    6 bits per index for a table size of 64
  443.    background index 0, RGB value 000/000/000
  444.    59 unique colors.
  445. =====
  446.  
  447.    The data displayed is the same, but more explanatory text is
  448. included.
  449.  
  450.    If the -c color dump option is in effect, the file header display
  451. looks like this:
  452.  
  453. =====
  454. Processing \JUNK2\DEVIL.GIF...
  455. FILE \JUNK2\DEVIL.GIF   GIF87a      11209 bytes
  456.    logical screen:    640 x   480
  457.    8 bits per color available on source
  458. GLOBAL COLOR TABLE:
  459.    6 bits (64 colors)   bg index 0 (000/000/000)
  460.    59 unique colors.
  461.    000/000/000   255/197/197   255/156/156   255/189/189   255/131/131
  462.    255/180/180   255/148/148   255/205/205   041/000/000   255/123/123
  463.    255/172/172   255/074/074   082/000/000   255/057/057   255/090/090
  464.    255/115/115   008/000/000   049/000/000   255/164/164   024/000/000
  465.    131/000/000   255/049/049   074/000/000   255/082/082   123/000/000
  466.    255/139/139   065/000/000   148/000/000   255/041/041   016/000/000
  467.    255/016/016   230/024/024   255/032/032   115/000/000   164/000/000
  468.    057/000/000   255/106/106   106/000/000   156/000/000   255/008/008
  469.    032/000/000   255/065/065   139/000/000   180/000/000   255/024/024
  470.    098/000/000   090/000/000   238/000/000   189/000/000   230/000/000
  471.    213/000/000   172/000/000   205/000/000   197/000/000   246/000/000
  472.    222/000/000   230/016/016   255/000/000   255/098/098   000/000/000
  473.    000/000/000   000/000/000   000/000/000   000/000/000
  474. =====
  475.  
  476.    The standard or verbose display is followed by a listing, in decimal,
  477. of the raw RGB values found in the global color map.
  478.  
  479.  3.2 Image
  480.  ---------
  481.  
  482.    The default image display, with no options, looks like this:
  483.  
  484. =====
  485. IMAGE 1:
  486.    size   640 x   480   corner     0,     0   sequentially
  487.    This image uses the global color table (no local color table).
  488.    IMAGE DATA FOR IMAGE 1:
  489.    code size 6 bits
  490.    Reached end of codes in block 42
  491.    totals: 7906 codes packed into 10948 bytes in 43 blocks
  492.         307200 pixels extracted
  493.         code table cleared 2 times
  494.         compressed data is 4% of the size of uncompressed image
  495.         59 colors referenced (59 unique)
  496. =====
  497.  
  498.    Each image in the file is numbered sequentially (by GIFCHECK) and has
  499. a section to itself. The first line gives the image number. The second
  500. line indicates the size (in pixels) of the image, the location (in
  501. pixels) of the upper left corner, and how the image is stored
  502. ("sequentially" or "interlaced").
  503.  
  504.    The third line indicates whether there is a local color table, and
  505. whether the image uses the global or local color table. If there is a
  506. local color table, the third line is followed by a color table display
  507. similar to the one for global color tables, possibly including a dump of
  508. the raw RGB values if the -c color dump option is in effect. Very few
  509. images have local color tables.
  510.  
  511.    Image data is stored compressed, and the compressed data is further
  512. broken up into blocks (which are numbered by GIFCHECK starting at 0).
  513. The fifth line indicates the minimum code size for the image. The sixth
  514. line indicates the block in which the end-of-information (EOI) code was
  515. encountered. The seventh line indicates the number of codes extracted,
  516. the number of bytes which those codes occupied, and how many blocks
  517. those bytes were divided into. The eighth line indicates how many pixels
  518. were generated when the codes were decompressed, and the ninth line
  519. indicates how many times the table-clear code was encountered.
  520.  
  521.    The tenth line indicates the size of the compressed data as a
  522. percentage of the size of the uncompressed image. The size of the
  523. compressed data is the size of the data only, not including block
  524. headers, image headers, or any other non-image data, so the compression
  525. ratio is accurate. The size of the uncompressed image is calculated by
  526. multiplying the height and the width to get the total number of pixels
  527. in the image, then multiplying by the number of bits required to
  528. represent the global or local color table, depending on which one is
  529. used by the image. Finally, the eleventh line indicates how many colors
  530. were referenced by the image data, and how many of the colors referenced
  531. are unique.
  532.  
  533.    If the -v VERBOSE option is in effect, the image display looks like
  534. this:
  535.  
  536. =====
  537. IMAGE 1:
  538.    image size (pixels, width x height):   640 x   480
  539.    image upper left corner (column, row):     0,     0
  540.    image is stored sequentially
  541.    This image uses the global color table (no local color table).
  542.    IMAGE DATA FOR IMAGE 1:
  543.    code size 6 bits
  544.    Reached end of codes in block 42
  545.    totals: 7906 codes packed into 10948 bytes in 43 blocks
  546.         307200 pixels extracted
  547.         code table cleared 2 times
  548.         compressed data is 4% of the size of uncompressed image
  549.         59 colors referenced (59 unique)
  550. =====
  551.  
  552.    The data displayed is the same, but more explanatory text is
  553. included.
  554.  
  555.    If the -f FAST option is in effect, the image display looks like
  556. this:
  557.  
  558. =====
  559. IMAGE 1:
  560.    size   640 x   480   corner     0,     0   sequentially
  561.    This image uses the global color table (no local color table).
  562.    IMAGE DATA FOR IMAGE 1:
  563.    code size 6 bits
  564.    totals: 10948 bytes in 43 blocks
  565.         compressed data is 4% of the size of uncompressed image
  566. =====
  567.  
  568.    Since the compressed image data is not decompressed under this
  569. option, less information is available.
  570.  
  571.  3.3 Extension Blocks
  572.  --------------------
  573.  
  574.    Extension blocks have been part of the GIF format since the original
  575. GIF87a specification. Each extension block has a type identifier. In the
  576. GIF87a specification, all extension types were application-defined;
  577. there were no global standards. However, the GIF89a specification
  578. dedicated four type identifiers for specific functions, and defined the
  579. data formats used within those extension blocks. GIFCHECK recognizes
  580. these dedicated types and formats the data appropriately.
  581.  
  582.   3.3.1 Generic extensions
  583.   ------------------------
  584.  
  585.    If the format is GIF87a, or the format is GIF89a but the type
  586. identifier is not one of the four dedicated types, the "generic
  587. extension" format is used. It looks like this:
  588.  
  589. =====
  590. GENERIC EXTENSION BLOCK 1:
  591.    extension block type 255
  592.    BLOCK 0 (11 bytes):
  593. G 47    I 49    F 46    L 4C    I 49    T 54    E 45      20    
  594.   20      20      20    
  595.    BLOCK 1 (6 bytes):
  596.   01    ) 29    p 70      0E      02      00    
  597.    totals: 17 bytes of data in 2 blocks
  598. =====
  599.  
  600.    Generic extension blocks are numbered sequentially (by GIFCHECK). The
  601. first line indicates that it is a generic extension block and gives the
  602. sequence number. The second line shows the type identifier value. The
  603. next lines display the data in hex dump format (generic extensions are
  604. always displayed in hex dump format, regardless of the setting of the -h
  605. option). Each data block is numbered sequentially (by GIFCHECK),
  606. starting at 0. A line giving the data block number and the number of
  607. bytes in the block is shown. Then the data bytes themselves are
  608. displayed, eight per line. If the byte is a printable character, the
  609. character is printed, followed by the hex value of the byte; otherwise a
  610. space is printed, followed by the hex value. Finally, a totals line is
  611. printed, indicating the total number of data bytes and the total number
  612. of data blocks.
  613.  
  614.    The -v VERBOSE option has no effect on generic extension displays.
  615.  
  616.   3.3.2 Graphic Control Extension
  617.   -------------------------------
  618.  
  619.    Graphic Control Extensions (GCEs) are one of the GIF89a dedicated
  620. extension types. When encountered, they are displayed like this:
  621.  
  622. =====
  623. GRAPHIC CONTROL EXTENSION BLOCK 1:
  624.    Disposal method: 0 (none)
  625.    User input is not expected
  626.    Transparency enabled (index 3)
  627.    No delay time specified
  628. =====
  629.  
  630.    GCEs are numbered sequentially (by GIFCHECK). The first line
  631. indicates that it is a GCE and gives the sequence number. The second
  632. line shows the disposal method (which applies to the next graphic --
  633. i.e. image or Plain Text Extension -- in the file). This can be: "none",
  634. "leave in place", "restore to background", or "restore to previous".
  635.  
  636.    The third line indicates whether user input is expected before the
  637. next graphic will be displayed. The fourth line indicates whether a
  638. transparency color index (which indicates that pixels of the given color
  639. should be rendered "transparent" -- i.e., not drawn) has been specified,
  640. and if so, what the transparency index is. The last line indicates
  641. whether a delay time (delay before the next graphic is displayed) has
  642. been specified, and if so what the delay value is.
  643.  
  644.    The -v VERBOSE option has no effect on GCE displays.
  645.  
  646.   3.3.3 Plain Text Extension
  647.   --------------------------
  648.  
  649.    Plain Text Extensions (PTEs) are one of the GIF89a dedicated
  650. extension types. When encountered, they are displayed like this:
  651.  
  652. =====
  653. PLAIN TEXT EXTENSION BLOCK 1:
  654.    char cell   8 x  28, grid  96( 12) x  28(  1) at     0,   112
  655.    Foreground color index 0 (RGB 016/016/014)
  656.    Background color index 3 (RGB 113/110/232)
  657.    START TEXT (12 characters):
  658.  Cass Berry 
  659.    END TEXT.
  660. =====
  661.  
  662.    PTEs are numbered sequentially (by GIFCHECK). The first line
  663. indicates that it is a PTE and gives the sequence number. The second
  664. line shows: the size of the character cell, in pixels; the size of the
  665. character grid, in pixels and cells (cells in parentheses); and the
  666. location of the upper left corner of the grid. The third line shows the
  667. index and RGB values of the foreground text color, and the fourth line
  668. shows the same for the background color.
  669.  
  670.    The fifth line indicates the start of the text, and how many
  671. characters of text are present. It is followed by the text itself, which
  672. is in turn followed by an "END TEXT." marker on the next line.
  673.  
  674.    If the -v VERBOSE option is in effect, PTEs are displayed like this:
  675.  
  676. =====
  677. PLAIN TEXT EXTENSION BLOCK 1:
  678.    Character cell grid upper left corner (column, row):     0,   112
  679.    Character cell size (pixels, width x height):   8 x  28
  680.    Character grid size (pixels, width x height):  96 x  28
  681.    Character grid size (chars, width x height):  12 x   1
  682.    Foreground color index 0 (RGB 016/016/014)
  683.    Background color index 3 (RGB 113/110/232)
  684.    START TEXT (12 characters):
  685.  Cass Berry 
  686.    END TEXT.
  687. =====
  688.  
  689.    The same information is displayed, but more explanatory text is
  690. included.
  691.  
  692.    If the -h hex dump option is in effect, the text is displayed in hex
  693. dump format, like this:
  694.  
  695. =====
  696. PLAIN TEXT EXTENSION BLOCK 1:
  697.    char cell   8 x  28, grid  96( 12) x  28(  1) at     0,   112
  698.    Foreground color index 0 (RGB 016/016/014)
  699.    Background color index 3 (RGB 113/110/232)
  700.    START TEXT (12 characters):
  701.    LINE 1:
  702.   20    C 43    a 61    s 73    s 73      20    B 42    e 65    
  703. r 72    r 72    y 79      20    
  704.    END TEXT.
  705. =====
  706.  
  707.    Instead of simply displaying the text, each character is displayed
  708. individually, followed by its hex value.
  709.  
  710.   3.3.4 Comment Extension
  711.   -----------------------
  712.  
  713.    Comment Extensions are one of the GIF89a dedicated extension types.
  714. When encountered, they are displayed like this:
  715.  
  716. =====
  717. COMMENT EXTENSION BLOCK 1:
  718.    START TEXT (161 characters):
  719. +-------------------------------------------------+
  720. | Multi-image GIF89a created with CompuMake Tools |
  721. +-------------------------------------------------+
  722.  
  723.    END TEXT.
  724.    0 unprintable characters.
  725. =====
  726.  
  727.    Comment Extensions are numbered sequentially (by GIFCHECK). The first
  728. line indicates that it is a Comment Extension and gives the sequence
  729. number. The second line indicates the start of the text and how many
  730. characters of text are present. It is followed by the text itself, which
  731. is in turn followed by an "END TEXT." marker on the next line. The last
  732. line indicates how many unprintable characters were found in the text.
  733.  
  734.    The -v VERBOSE option has no effect on Comment Extension displays.
  735.  
  736.    If the -h hex dump option is in effect, the text is displayed in hex
  737. dump format, like this:
  738.  
  739. =====
  740. COMMENT EXTENSION BLOCK 1:
  741.    START TEXT (161 characters):
  742. + 2B    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    
  743. - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    
  744. - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    
  745. - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    
  746. - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    
  747. - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    
  748. - 2D    - 2D    + 2B      0D      0A    | 7C      20    M 4D    
  749. u 75    l 6C    t 74    i 69    - 2D    i 69    m 6D    a 61    
  750. g 67    e 65      20    G 47    I 49    F 46    8 38    9 39    
  751. a 61      20    c 63    r 72    e 65    a 61    t 74    e 65    
  752. d 64      20    w 77    i 69    t 74    h 68      20    C 43    
  753. o 6F    m 6D    p 70    u 75    M 4D    a 61    k 6B    e 65    
  754.   20    T 54    o 6F    o 6F    l 6C    s 73      20    | 7C    
  755.   0D      0A    + 2B    - 2D    - 2D    - 2D    - 2D    - 2D    
  756. - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    
  757. - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    
  758. - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    
  759. - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    
  760. - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    - 2D    
  761. - 2D    - 2D    - 2D    - 2D    + 2B      0D      0A      0D    
  762.   0A    
  763.    END TEXT.
  764.    0 unprintable characters.
  765. =====
  766.  
  767.    Instead of simply displaying the text, each character is displayed
  768. individually, followed by its hex value.
  769.  
  770.   3.3.5 Application Extension
  771.   ---------------------------
  772.  
  773.    Application Extensions are one of the GIF89a dedicated extension
  774. types. When encountered, they are displayed like this:
  775.  
  776. =====
  777. APPLICATION EXTENSION BLOCK 1:
  778.    application identifier:
  779. f 66    r 72    a 61    c 63    t 74    i 69    n 6E    t 74    
  780.    application authentication code:
  781. 0 30    0 30    1 31    
  782.    246 bytes of application data.
  783. F 46    r 72    a 61    c 63    t 74    a 61    l 6C      00    
  784.   96      00      07      00      00      00      00    h 68    
  785.   D8      FB      0C    @ 40      00      00      00      20    
  786.   0B      FF      0C    @ 40      00      00      00      00    
  787.   00      E9    I 49    ? 3F      00      00      00      00    
  788.   F0    = 3D      89    ? 3F      00      00      00      00    
  789.   00      00      00      00      00      00      00      00    
  790.   00      00      00      00      00      00      00      00    
  791.   00      00      00      00      1B      00      80      02    
  792.   E0      01      00      01      04      00      00      00    
  793.   00      00      00      00      00      00      00      00    
  794.   00      00      00      00      00      00      00      00    
  795.   00      00      00      00      00      00      FF      FF    
  796.   01      00      01      00      00      00      00      00    
  797.   00      00      00      00      00      00      00      00    
  798.   00      00      00      00      E7      03      00      00    
  799. Z 5A      00      09      01      00      00    x 78      00    
  800.   8C      00    ( 28      00      00      00      02      00    
  801. n 6E      00      00      00      00      00      01      00    
  802.   FF      FF      01      00      00      00      14      00    
  803.   00      00      00      00      04      00      00      00    
  804.   00      00      04      00    P 50      00    d 64      00    
  805.   00      00      00      00      00      00      FF      FF    
  806.   00      00      00    h 68      D8      FB      0C    @ 40    
  807.   00      00      00      00      00      E9    I 49    ? 3F    
  808. g 67      00      04      00      06      01      00      00    
  809.   00      00      00      00      00      00      D8      A7    
  810.   00      00      00      06      02      03      00      00    
  811.   00      00      00      00      00      00      00      00    
  812.   00      00      00      00      00      00      00      00    
  813.   01      00      00      00      00      00    
  814. =====
  815.  
  816.    Application Extensions are numbered sequentially (by GIFCHECK). The
  817. first line indicates that it is an Application Extension and gives the
  818. sequence number. The second line introduces the eight-byte application
  819. identifier and is followed on the third line by the application
  820. identifier itself, in hex dump format. The fourth line introduces the
  821. three-byte application authentication code and is followed on the fifth
  822. line by the application authentication code itself, in hex dump format.
  823. The sixth line indicates how many bytes of application data are present,
  824. and is followed by the application data itself in hex dump format. All
  825. data in Application Extensions is always displayed in hex dump format,
  826. regardless of the setting of the -h option.
  827.  
  828.    The -v VERBOSE option has no effect on Application Extension
  829. displays.
  830.  
  831.  3.4 Terminator
  832.  --------------
  833.  
  834.    When the GIF terminator block is encountered, GIFCHECK prints this
  835. line:
  836.  
  837. =====
  838. GIF TERMINATOR
  839. =====
  840.  
  841.  
  842. 4. DIAGNOSTIC MESSAGES
  843. ----------------------
  844.  
  845.    GIFCHECK can produce a variety of diagnostic messages. Some indicate
  846. problems within the GIF file. Others indicate malfunctions of GIFCHECK
  847. or the computer. Messages beginning with "ANOMALY", "VIOLATION",
  848. "FASCINATING", and "NITPICK" indicate problems within the GIF file.
  849. Messages beginning "FATAL ERROR", "ERROR", or "WARNING" indicate
  850. malfunctions. Messages beginning "STRIP" indicate that the file should
  851. be processed by the GIFSTRIP program to remove excess characters.
  852.  
  853.  4.1 Anomalies
  854.  -------------
  855.  
  856.    Anomalies are radical violations of the GIF specification. Anomalies
  857. may be caused by massive corruption of the file, to the extent that
  858. GIFCHECK cannot determine how to proceed with processing of the file, or
  859. by individual values that make no sense. In either case, an image with
  860. anomalies will probably be rejected by most GIF viewers. Anomalies are
  861. always displayed and always cause GIFCHECK to skip immediately to the
  862. next file to be processed.
  863.  
  864.    The various anomalies that GIFCHECK can detect are explained below.
  865.  
  866.         ANOMALY: end of data reached before end of codes
  867.                 GIFCHECK reached the end of the packed image data
  868.                 without encountering an End-of-Information code, which
  869.                 signals the end of the image.
  870.  
  871.         ANOMALY: decompression error in block xxx at offset yyy
  872.                 GIFCHECK found a bad code in the packed image data. This
  873.                 indicates that the file has been corrupted, and most
  874.                 likely the rest of the file is trash.
  875.  
  876.         ANOMALY: foreground color index off end of global color table
  877.                 The color index specified for the foreground in a GIF89a
  878.                 Plain Text Extension is invalid (PTEs always use the
  879.                 global color table).
  880.  
  881.         ANOMALY: background color index off end of global color table
  882.                 The color index specified for the background in a GIF89a
  883.                 Plain Text Extension is invalid (PTEs always use the
  884.                 global color table).
  885.  
  886.         ANOMALY: an undefined disposal method (x) is given
  887.                 The value in the disposal method field of a Graphic
  888.                 Control Extension is undefined.
  889.  
  890.         ANOMALY: a ... cannot follow a ...
  891.                 Where "..." is a block type. The GIF89a specification
  892.                 includes a grammar which indicates which types of blocks
  893.                 can follow which other types of blocks (in the simpler
  894.                 GIF87a specification, there was no need). This grammar
  895.                 has been violated.
  896.  
  897.  4.2 Violations
  898.  --------------
  899.  
  900.    Violations are major violations of the GIF specification. Violations
  901. may be caused by corruption of the file or by individual values that
  902. make no sense. In either case, an image with violations may be rejected
  903. by some viewers and displayed with difficulty by others. Violations are
  904. always displayed, and by default cause GIFCHECK to skip immediately to
  905. the next file to be processed.
  906.  
  907.    The various violations that GIFCHECK can detect are explained below.
  908.  
  909.         VIOLATION: image does not fit on logical screen
  910.                 Either the size of the image given in the image header
  911.                 is greater in one or both dimensions than the size of
  912.                 the logical screen given in the file header, or the
  913.                 position of the image given in the image header causes
  914.                 parts of the image to extend beyond the boundaries of
  915.                 the logical screen.
  916.  
  917.         VIOLATION: bad transparency index (x)
  918.                 If processing a Plain Text Extension, indicates that the
  919.                 transparency index specified by a preceeding Graphic
  920.                 Control Extension is off the end of the global color
  921.                 table (PTEs always use the global color table). If
  922.                 processing an image, indicates that the transparency
  923.                 index is off the end of either the global or local color
  924.                 table, depending on which one the image uses.
  925.  
  926.         VIOLATION: character grid does not fit on logical screen
  927.                 Either the size of the character grid given in the Plain
  928.                 Text Extension is greater in one or both dimensions than
  929.                 the size of the logical screen given in the file header,
  930.                 or the position of the character grid causes parts of it
  931.                 to extend beyond the boundaries of the logical screen.
  932.  
  933.         VIOLATION: text is too long to fit into character grid
  934.                 The text given in the Plain Text Extension contains more
  935.                 characters than there are character cells in the
  936.                 character grid.
  937.  
  938.         VIOLATION: xxx garbage characters found between blocks
  939.                 There should be no garbage characters between blocks.
  940.                 While this can theoretically be solved by using the
  941.                 GIFSTRIP program, it probably indicates that the file
  942.                 has been corrupted.
  943.  
  944.  4.3 Fascinatings
  945.  ----------------
  946.  
  947.    Fascinatings are not always violations of the GIF specification.
  948. Fascinatings are unusual conditions which most viewers can cope with,
  949. but are still worthy of note. Fascinatings are displayed by default, and
  950. by default do NOT cause GIFCHECK to skip.
  951.  
  952.    The various fascinatings that GIFCHECK can detect are explained
  953. below.
  954.  
  955.         FASCINATING: this file does not contain a global color table
  956.                 The GIF specification allows for files without global
  957.                 color tables; they are to be displayed using the global
  958.                 color table from a previous file, or a default table
  959.                 chosen by the viewer if no previous global color table
  960.                 is available. Files without global color tables are
  961.                 extremely rare. This message is displayed when an image
  962.                 which uses the global color table is encountered in a
  963.                 file which has none.
  964.  
  965.         FASCINATING: xxx extra blocks on end of image
  966.                 The packed image data continued for one or more blocks
  967.                 after the block in which the End-of-Information (EOI)
  968.                 code was found. While this condition is suspicious, the
  969.                 data before the EOI decompressed correctly (otherwise an
  970.                 ANOMALY would have occurred), so there's no concrete
  971.                 evidence that the image is bad.
  972.  
  973.         FASCINATING: too few pixels extracted (xxx lines found, yyy pixels
  974.                      missing)
  975.                 When the End-of-Information code was encountered, too
  976.                 few pixels had been extracted to fill the image (e.g.
  977.                 for a 320 by 200 image, which should have 64,000 pixels,
  978.                 only 63,999 were extracted). Typically only one or two
  979.                 are missing. Viewers seem to cope with this condition
  980.                 OK.
  981.  
  982.         FASCINATING: too many pixels extracted (xxx extra)
  983.                 When the End-of-Information code was encountered, more
  984.                 pixels than necessary had been extracted (e.g. for a
  985.                 320 by 200 image, which should have 64,000 pixels,
  986.                 64,001 were extracted). Typically only one or two extras
  987.                 are present. Viewers seem to cope with this condition
  988.                 OK.
  989.  
  990.         FASCINATING: code table never cleared
  991.                 While this is technically OK, it is recommended practice
  992.                 to clear the decompression code table (via a clear code
  993.                 in the compressed image data) immediately at the
  994.                 beginning of the image. If the code table was never
  995.                 cleared, the initial clear never occurred.
  996.  
  997.         FASCINATING: this file has no Global Color Table (GCT is used by PTE)
  998.                 The GIF specification allows for files without global
  999.                 color tables; they are to be displayed using the global
  1000.                 color table from a previous file, or a default table
  1001.                 chosen by the viewer if no previous global color table
  1002.                 is available. Files without global color tables are
  1003.                 extremely rare. This message is displayed when a Plain
  1004.                 Text Extension (PTEs always use the global color table)
  1005.                 is encountered in a file which has no global color table.
  1006.  
  1007.         FASCINATING: transparency index does not match either foreground
  1008.                      or background
  1009.                 This message is displayed when processing a Plain Text
  1010.                 Extension and the transparency index specified by a
  1011.                 preceeding Graphic Control Extension does not match
  1012.                 either the foreground or the background color indices of
  1013.                 the PTE. This renders the transparency index
  1014.                 meaningless, since it only applies to the next graphic
  1015.                 (image or PTE) following the GCE. Nothing is technically
  1016.                 wrong, but it's weird.
  1017.  
  1018.  4.4 Nitpicks
  1019.  ------------
  1020.  
  1021.    Nitpicks are minor technical violations of the GIF specification.
  1022. Some are very common, and they should not cause problems when viewing
  1023. the file. Nitpicks are by default NOT displayed, and never cause
  1024. GIFCHECK to skip.
  1025.  
  1026.    The various nitpicks that GIFCHECK can detect are explained below.
  1027. Most of these messages are self-explanatory, so no detailed explanation
  1028. is given.
  1029.  
  1030.         NITPICK: byte 6 of the logical screen descriptor should be 0 for GIF87A
  1031.  
  1032.         NITPICK: bit 3, byte 4 of logical screen descriptor should be 0
  1033.                  for GIF87A
  1034.  
  1035.         NITPICK: bits 3 and 4, byte 9 of image descriptor should be 0
  1036.  
  1037.         NITPICK: bit 5, byte 9 of image descriptor should be 0 for GIF87A
  1038.  
  1039.         NITPICK: bits 5-7, byte 1 of graphic control extension should be 0
  1040.  
  1041.         NITPICK: local color table size is nonzero
  1042.                 The image does not have a local color table, but the
  1043.                 local color table size is nonzero.
  1044.  
  1045.         NITPICK: character grid not an integral number of character cells wide
  1046.                 The horizontal size of the character grid in a Plain
  1047.                 Text Extension is not evenly divisible by the horizontal
  1048.                 size of a character cell.
  1049.  
  1050.         NITPICK: character grid not an integral number of character cells high
  1051.                 The vertical size of the character grid in a Plain Text
  1052.                 Extension is not evenly divisible by the vertical size
  1053.                 of a character cell.
  1054.  
  1055.         NITPICK: xxx unprintable characters in text
  1056.                 Plain Text Extensions are supposed to contain only
  1057.                 "7-bit printable ASCII characters".
  1058.  
  1059.  4.5 Miscellaneous
  1060.  -----------------
  1061.  
  1062.    GIFCHECK can also produce messages beginning with "FATAL ERROR",
  1063. "ERROR", "WARNING", and "STRIP". The first three indicate malfunctions
  1064. of GIFCHECK or the computer, and typically cause GIFCHECK to exit
  1065. immediately. Messages beginning with "STRIP" indicate that the file
  1066. should be processed by the GIFSTRIP program to remove excess characters,
  1067. and are simply for the user's information. Processing of the file is not
  1068. affected.
  1069.  
  1070.  
  1071. 5. THE END
  1072. ----------
  1073.  
  1074.    Technical support via email is available from the following addresses:
  1075.  
  1076.    INTERNET (the following are alternate addresses for the same place):
  1077.       support@picarefy.com
  1078.       picarefy!support@amc.com
  1079.       picarefy!support@netcom.com
  1080.       uunet!uw-coco!amc-gw!picarefy!support
  1081.  
  1082.    COMPUSERVE:
  1083.       71261,1731
  1084.  
  1085.    GENIE:
  1086.       J.BIRDSALL2
  1087.  
  1088.    Registrations should be sent to:
  1089.  
  1090.       James W. Birdsall
  1091.       11112 NE 124 LN #D204
  1092.       Kirkland, WA 98034
  1093.  
  1094.    If you have an email address on any of the networks listed above,
  1095. please include it when registering. It is much easier to send updates by
  1096. email. Also, please specify what sort of archive (ZIP, ZOO, ARC, LZH,
  1097. ARJ, UNIX shar) you can handle most easily.
  1098.  
  1099.    NOTE: IF YOU DO NOT PROVIDE AN EMAIL ADDRESS, YOU WILL ONLY RECEIVE
  1100. MAJOR VERSION UPDATES. YOU WILL NOT RECEIVE MINOR VERSIONS. PLEASE
  1101. PROVIDE AN EMAIL ADDRESS IF YOU HAVE ANY WAY OF DOING SO.
  1102.  
  1103.